package com.txw.javaCore.server.elasticJob;

import com.beust.jcommander.internal.Sets;
import com.google.common.base.Joiner;
import com.txw.javaCore.server.util.FileUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;

import java.util.List;
import java.util.Set;
import java.util.function.Consumer;

/**
 * @PROJECT_NAME: JavaCoreB2
 * @DESCRIPTION:
 * @Author: 涂玄武
 * @DATE: 2021/3/9 14:09
 */
@Service
@Slf4j
public class BlogImageService {

    /**
     * 通用的清理废弃图片共用的代码逻辑
     * @param list
     */
    public void commonCleanImage(List<String> list){

        Integer blogImageId = 0;

        try {
            //收集待删除的微博Id
            //Set<Integer> set = list.stream().map(BlogImageDto:getId).collect(Collectors.toSet());
            Set<Integer> set = Sets.newHashSet();
            if (!CollectionUtils.isEmpty(list)){
                list.forEach(new Consumer<String>() {
                    @Override
                    public void accept(String filePath) {
                        FileUtils.deleteFile(filePath);

                        set.add(blogImageId);
                    }
                });

                //待删除的数据库记录Id列表
                if (!CollectionUtils.isEmpty(set)){
                    //删除数据库中的微博图片 delete from blog_image where id in (&(ids))
                    //<![CDATA[ ]]>:如果写的sql中有一些特殊的字符的话，在解析xml文件的时候会被转义，但我们不希望他被转义,可使用这个
                    //小技巧：为了避免在数据中foreach遍历取值删除，可使用静态取值的方式
                    String res = Joiner.on(",").join(set);
                    //blogImageMapper.delBlogImages(res);
                }
            }
        }catch (Exception e){
            log.error("通用的清理废弃图片共用的代码逻辑,发生异常：",e);
        }
    }

}
